// Rust函数，使用 fn 关键字来声明函数
// 函数和变量名使用下划线 _ 命名法规范风格
// Rust 不关心函数定义于何处，只要定义了就行。可以定义在 main 函数之后；也可以定义在之前


// 最简单函数
pub fn another_function() {
    println!("Another function.");
}


// 函数带参数
pub fn another_function_arg(x: i32) {
    println!("The value of x is: {}", x);
}
pub fn print_labeled_measurement(value: i32, unit_label: char) {
    println!("The measurement is: {} {}", value, unit_label);
}


// 语句和表达式
// 语句（statement）是执行一些操作但不返回值的指令。表达式（expression）计算并产生一个值
pub fn function_statement() {
    let y = {
        let x = 3;  // 语句
        // 表达式的结尾没有分号。如果在表达式的末尾加上分号，那么它就转换为语句，而语句不会返回值
        x + 1            // 表达式，默认为返回值
    };

    println!("The value of y is: {}", y);
}


// 带返回值函数，使用箭头符号 -> 指定返回值类型
pub fn five() -> i32 {
    5
}
pub fn plus_one(x: i32) -> i32 {
    x + 1
}